#include <tinx/task.h>
#include <tinx/device.h>
#include <tinx/fs.h>
#include <tinx/assert.h>
#include <tinx/string.h>

#define NR_FILE 128
#define NR_FS_OP 32

file_t file_table[NR_FILE];

file_t *get_file()
{
    for (size_t i = 3; i < NR_FILE; i++)
    {
        file_t *file = &file_table[i];
        if (!file->count)
        {
            file->count++;
            return file;
        }
    }
    panic("No more files!!!\n");
}

void put_file(file_t *file)
{
    file->count--;
    if (!file->count)
        iput(file->inode);
}

void file_init()
{
    for (size_t i = 3; i < NR_FILE; i++)
    {
        file_t *file = &file_table[i];
        memset(file, 0, sizeof(file_t));
    }
}